package com.jacob.androidstudy.javanote;

/**
 * String类
 * String对象创建后是不可改变的。
 * 如果要频繁改变字符串的值，应使用StringBuffer类. 多线程下用StringBuilder类.
 * StringBuffer和StringBuilder的使用参看API.
 */
public class $09_String类 {

	/**
	 * 这种方式
	 * JVM会先在String对象池中寻找“abc”对象。
	 * 若找到，则将引用赋给string1；
	 * 若找不到，则会在对象池中创建一个“abc”对象，然后将引用赋给string1。
	 */
	String string1="abc";

	/**
	 * 这种方式
	 * JVM首先在对象池中寻找/创建"abc"对象,过程如上.
	 * 然后用"abc"对象作参数创建一个新String对象,将新String对象的引用赋给string2.
	 * 结果就是对象池中有一个"abc"对象,对象池外也有一个"abc"对象.
	 */
	String string2=new String("abc");
	
	
	public static void main(String[] args) {
		/**
		 * 字符串截取
		 * 用string.substring(beginIndex, endIndex)。
		 * beginIndex表示开始截取的位置，从0开始计算。
		 * endIndex表示第一个不想要的字符，所处的位置。
		 */
		"Hello".substring(0, 3);
		
		/**
		 * 字符串拼接
		 * 使用加号+拼接两个字符串。
		 * 当将一个字符串和一个非字符串对象进行拼接时，后者被转换成字符串格式。
		 */
		System.out.println("Hello"+12);
		
		/**
		 * 检测字符串是否相等
		 * 比较时区分大小写，可以使用string1.equals(string2)。
		 * 若不区分大小写，可以用string1.equalsIgnoreCase(string2)。
		 */
		"Hello".equals("hello");
		"Hello".equalsIgnoreCase("hello");
		
	}

}
